<?php
//$Id: base.php 604 2012-12-15 01:47:05Z tomqin@gmail.com $

/**
 * Part of the framework.
 *
 * @package     Core
 * @version     1.0
 * @copyright   Copyright (C) 2010-2012 SupeFun.com Inc.
 * @author      TomQin <tomqin@gmail.com>
 * @license     http://www.supefun.com/license/
 */

define('DS', DIRECTORY_SEPARATOR);
//define('CRLF', chr(13).chr(10));
define('BASE_PATH', dirname(__FILE__).DS);
define('CONF_PATH', BASE_PATH.'config'.DS);
define('DATA_PATH', BASE_PATH.'data'.DS);
define('VIEW_PATH', BASE_PATH.'template'.DS);
define('TIMESTAMP', $_SERVER['REQUEST_TIME']);
define('FORMHASH',  md5(mt_rand()));

spl_autoload_register('autoload');

function autoload($class){
    require_once BASE_PATH . 'library' . DS . $class . '.php';
}

function logger($level, $msg, $method = null){
    exit('TODO: 日志记录的工具');
}

/**
 * A case-insensitive version of in_array.
 *
 * @param   mixed   $needle
 * @param   array   $haystack
 * @return  bool
 */
if (!function_exists('in_arrayi'))
{
    function in_arrayi($needle, $haystack){
        return in_array(strtolower($needle), array_map('strtolower', $haystack));
    }
}

/**
 * 给出一个可打印的调试信息
 *
 * @param mixed   数据
 * @param string  标题，可选
 */
function p($var, $title = ''){
    echo '<fieldset>';
    if($title) echo '<legend>'.htmlspecialchars($title).'</legend>';
    echo '<pre>';
    if(empty($var)){
        var_dump($var);
    }else{
        print_r($var);
    }
    echo '</pre></fieldset>';
}

function h(&$var, $default = ''){
    if(isset($var) && $var) return htmlspecialchars($var);
    else return $default;
}

function i(&$var, $default = ''){
    if(isset($var) && $var) return intval($var);
    else return $default;
}

function s($format, &$var, $default = ''){
    if(isset($var) && $var) return sprintf($format, $var);
    else return $default;
}

/**
 * 返回请求值，若不存在（或为空），则返回默认值
 *
 * @param mixed
 * @param mixed
 * @return mixed
 */
function get_request($key = '', $default = ''){
    if(empty($key)) return $_REQUEST;
    if(strpos('.',$key) > 0){
        $ret = Arr::get($_REQUEST, $key, null);
        return $ret ? $ret : $default;
    }else{
        return isset($_REQUEST[$key]) && $_REQUEST[$key] ? $_REQUEST[$key] : $default;
    }
}

function get_post($key = '', $default = ''){
    if(empty($key)) return $_POST;
    if(strpos('.',$key) > 0){
        $ret = Arr::get($_POST, $key, null);
        return $ret ? $ret : $default;
    }else{
        return isset($_POST[$key]) && $_POST[$key] ? $_POST[$key] : $default;
    }
}

function create_url($func, $url, array $params){
    list($m, $c, $a) = explode('/', $url);
    $params = array(
        'm' => $m, 'c' => $c, 'a' => $a
    ) + $params;
    return $func.'?'.http_build_query($params);
}

function admin_url($url, array $params = array()){
    return create_url('/admin.php', $url, $params);
}

function index_url($url, array $params = array()){
    return create_url('/index.php', $url, $params);
}